package com.example.papercut.mapper;

import com.example.papercut.entity.TemplateRating;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
public interface TemplateRatingMapper {

    /**
     * 3.1: 插入或更新一条评分记录（因为是复合主键，需要判断是否存在）
     */
    int insertRating(TemplateRating rating);

    /**
     * 3.1: 查询指定模板的所有评论
     */
    List<TemplateRating> findRatingsByPapercutId(Integer papercutId);
    
    /**
     * 3.1: 查询用户对某个模板是否已评分
     */
    TemplateRating findRatingByUserAndPapercut(
        @Param("userId") Integer userId, 
        @Param("papercutId") Integer papercutId
    );

    /**
     * 1.3: 计算单个模板的平均评分
     */
    Double calculateAverageRating(Integer papercutId);

    // ... 其他方法
    List<TemplateRating> findRatingsByUserId(@Param("userId") Integer userId);
}